PLT-0000 feat(app): bundle a trace explorer app with the datasource#3
Merged
Merged
Conversation
…d plugin Restructure the repo into a single nested Grafana plugin: the top-level plugin becomes the app quickwit-quickwit-app, with the datasource nested at dist/datasources/quickwit keeping its quickwit-quickwit-datasource ID so existing provisioning keeps working. App (Grafana Scenes, src/app/): - Span explorer: Lucene editor (autocomplete/lint, shared with the datasource), errors-only / root-spans / slowest pills, duration range, log-scale duration heatmap with drag-to-filter (time + duration), focusable metric panels, attribute favorites + extra table columns (joined from raw spans), trace peek drawer (waterfall/logs tabs) - Breakdown: per-value rate/errors/duration-percentile rows with infinite scroll, value search (debounced), configurable percentile lines (default p50/p95/p99), add-value-as-filter - Trace viewer: full-height waterfall + trace logs side by side, span-level log filtering, log text search, infinite scroll - Datasource picker (Grafana default aware), ctrl/cmd+z zoom-out hotkey, everything URL-synced for shareable views Datasource: - trace_search: server-side sort setting (duration scans the window via sort_by=-span_duration_millis; errors/spans sort summaries before the limit) and "Peek trace"/"Peek logs" data links into the app - LogsSample supplementary query support (Explore "Logs sample" section) - LuceneQueryEditor follows the active theme instead of hardcoding dark Build: @grafana/* 13.0.2 + @grafana/scenes 7, root webpack extension for the nested manifest, nest-backend.sh places the Go binary, dev stack mounts dist and provisions datasources + app defaults. PLT-0000 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reuse the trace viewer's LogsFilter/LogsFilterControls in the peek drawer's logs tab: free-text Lucene search plus the span pill, URL-synced (spanId/logq) and cleared when switching or closing traces. PLT-0000 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
FilterPill has no title prop; use Tooltip for the hover hint instead. PLT-0000 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
buildAll failed in CI with "plugin.json is missing: executable" because the top-level src/plugin.json is now the app manifest. Use the SDK's before-build callback to read src/datasources/quickwit/plugin.json and emit the binaries + go_plugin_build_manifest straight into dist/datasources/quickwit. nest-backend.sh now just migrates artifacts left at the dist root by older builds. PLT-0000 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The e2e jobs restore executable permissions on the downloaded artifact; the binaries now live in dist/datasources/quickwit. PLT-0000 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Give Quickwit traces a first-class exploration UI inside Grafana instead of ad-hoc Explore queries. The repo becomes a single nested plugin: a Scenes-based app (
quickwit-quickwit-app) bundling the existing datasource (quickwit-quickwit-datasource, same ID so current provisioning keeps working).Changes
LogsFiltercontrols — free-text Lucene search plus the span pill, URL-synced (spanId/logq), cleared when switching or closing traces.trace_searchserver-side sort + "Peek trace"/"Peek logs" data links into the app,LogsSamplesupplementary query support, theme-aware Lucene editor.@grafana/*13.0.2 +@grafana/scenes7, root webpack extension for the nested manifest,nest-backend.shfor the Go binary, dev stack mountsdistand provisions datasources + app defaults.Test plan
npm run buildsucceeds; app loads at/a/quickwit-quickwit-app/explorerwith the provisioned dev stack (docker-compose up).peek=URL restores filters.🤖 Generated with Claude Code